In a cloud computing environment, numerous cloud service requests are serviced in relatively short periods of time. In such an environment, it is highly beneficial to automate placement, rendering, and provisioning of cloud services within and between data centers, so that cloud service requests can be accommodated dynamically with minimal (and preferably no) human intervention.
Examples of cloud services include: compute services, network services, and storage services. Examples of network services include Layer 2 (L2) virtual local area network (VLAN) or Layer 3 (L3) virtual routing and forwarding (VRF) connectivity between various physical and logical elements in a data center, Layer 4 (L4) to Layer 7 (L7) services including firewalls and load balancers, Quality of Service (QoS), access control lists (ACLs), and accounting.
Network management of cloud computing systems currently use orchestration tools which learn about all cloud elements within the data center, make all placement decisions for all cloud elements within the data center, and render and provision the cloud service request by communicating directly with each cloud element in the data center. Due to the wide variety of functionality and implementations within the data center, such orchestration tools need to be highly customizable and flexible so that they can utilize the wide array of management interfaces provided by various cloud elements. Considerable effort is required to make the orchestration tools properly interface with new implementations of cloud elements within the data center, leading to significant time delays before new features provided by the cloud elements can be managed by the orchestration tools. These orchestration tools have great difficulty scaling to large cloud environments.
In current cloud computing environments, failures require manual re-provisioning of services. Depending upon the failures, the service outage could be in the order of hours, days, or even weeks.